Mathematical programming based debugging
نویسندگان
چکیده
Verifying that a piece of software has no bugs means proving that it has certain desired properties, such as an array index not taking values outside certain bounds. Abstract interpretation is used in the static analysis of code to establish the inclusion-wise smallest set of values (numerical invariant) that the program variables can attain during program execution. Such sets can be used to detect run-time errors without actually running the program. We present a mathematical program that determines guaranteed smallest interval invariants of computer programs with integer affine arithmetics and compare our results to existing techniques.
منابع مشابه
Proving the correctness of algorithmic debugging for functional programs
This paper presents a formal model of tracing for functional programs based on a small-step operational semantics. The model records the computation of a functional program in a graph which can be utilised for various purposes such as algorithmic debugging. The main contribution of this paper is to prove the correctness of algorithmic debugging for functional programs based on the model. Althou...
متن کاملDebugging and Structural Analysis of Declarative Equation-Based Languages
A significant part of the software development effort is spent on detecting deviations between software implementations and specifications, and subsequently locating the sources of such errors. This thesis illustrates that is possible to identify a significant number of errors during static analysis of declarative object-oriented equation-based modeling languages that are typically used for sys...
متن کاملComputational Logic in Australia
interpretation is a language-independent theory for static analysis of programs. This theory plays a prominent role in much work in the group, since most sophisticated implementation ideas require static analysis. The work contributes to the theory generally, as well as its applications in functional and logic programming, including sophisticated program transformation. Techniques are also bein...
متن کاملApplications and extensions of Alloy: past, present and future
Alloy is a declarative language for lightweight modelling and analysis of software. The core of the language is based on first-order relational logic, which offers an attractive balance between analysability and expressiveness. The logic is expressive enough to capture the intricacies of real systems, but is also simple enough to support fully automated analysis with the Alloy Analyzer. The Ana...
متن کاملAssigning Blame: Mapping Performance to High Level Parallel Programming Abstractions
Parallel programs are increasingly being written using programming frameworks and other environments that allow parallel constructs to be programmed with greater ease. The data structures used allow the modeling of complex mathematical structures like linear systems and partial differential equations using high-level programming abstractions. While this allows programmers to model complex syste...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Electronic Notes in Discrete Mathematics
دوره 36 شماره
صفحات -
تاریخ انتشار 2010